package com.toilet.easyvideofx.global;

import com.toilet.easyvideofx.constant.SystemConstant;
import org.apache.ibatis.session.SqlSessionFactory;

import java.util.concurrent.ConcurrentHashMap;

/**
 * 全局容器管理
 */
public class GlobalCache {
    /**
     * 全局容器
     */
    private static final ConcurrentHashMap<String, Object> globalMap = new ConcurrentHashMap<>();

    /**
     * 向容器中添加对象
     *
     * @param key   键
     * @param value 值
     */
    public static void put(String key, Object value) {
        globalMap.put(key, value);
    }

    /**
     * 从容器中获取对象
     *
     * @param key    键
     * @param tClass 类型
     * @param <T>    泛型
     * @param key    key值
     * @param tClass 类型
     * @param <T>
     * @return 值
     * @return
     */
    public static <T> T get(String key, Class<T> tClass) {
        Object o = globalMap.get(key);
        return (T) o;
    }

    /**
     * 从容器中获取对象
     *
     * @param key 键
     * @return 值
     */
    public static Object get(String key) {
        Object o = globalMap.get(key);
        return o;
    }

    /**
     * 获取基础请求地址
     *
     * @return 基础请求地址
     */
    public static String getBaseUrl() {
        String baseUrl = (String) globalMap.get(SystemConstant.BASE_REQUEST_URL);
        if (baseUrl == null) {
            baseUrl = "http://127.0.0.1:9001";
        }
        return baseUrl;
    }

    /**
     * 获取数据库连接
     *
     * @return 基础请求地址
     */
    public static SqlSessionFactory getDBSession() {
        return (SqlSessionFactory) globalMap.get(SystemConstant.DB_SESSION_FACTORY);
    }
    public static String show() {
        return globalMap.toString();
    }
}
